home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / links.arc / TLIST.PAS < prev   
Pascal/Delphi Source File  |  1991-04-28  |  2KB  |  85 lines

  1. program tlist;
  2.  
  3. uses Links;
  4.  
  5. type
  6.     NameType = string[10];
  7.     person = object(link)
  8.         name :NameType;
  9.         constructor init(nameArg :NameType);
  10.     end;
  11.     Pperson = ^person;
  12.  
  13. constructor person.init(nameArg :NameType);
  14. begin
  15.     name := nameArg;
  16.     link.init;
  17. end;
  18.  
  19. var
  20.     queue : Phead;
  21.     man   : Pperson;
  22.     man2  : Pperson;
  23.     n     : integer;
  24.     tf    : boolean;
  25.  
  26. begin
  27.     new(queue,Init);
  28.     tf := queue^.Empty;
  29.     new(man,Init('Bill'));
  30.     man^.Into(queue);
  31.     new(man,Init('Tom'));
  32.     man^.Into(queue);
  33.     new(man,Init('Jerry'));
  34.     man^.Into(queue);
  35.  
  36.     man := queue^.First;
  37.     writeln('First man in queue is ',man^.name);
  38.     man := queue^.Last;
  39.     writeln('Last man in queue is ',man^.name);
  40.  
  41.     n := queue^.Cardinal;
  42.     writeln('Length of queue is ',n);
  43.     if not queue^.Empty then writeln('EMPTY reports queue NOT empty');
  44.  
  45.     new(man2,Init('Hugo'));
  46.     man2^.Precede(man);
  47.  
  48.     new(man2,Init('Alfonso'));
  49.     man2^.Follow(man);
  50.     { should now be: Bill Tom Hugo Jerry Alfonso }
  51.     writeln('After PRECEDE and FOLLOW calls, list should be:');
  52.     writeln('  {Bill, Tom, Hugo, Jerry, Alfonso}');
  53.     writeln('Actual list is:');
  54.  
  55.     man := queue^.First;
  56.     while man <> NIL do
  57.       begin
  58.           write(man^.name,' ');
  59.           man := man^.Suc;
  60.       end;
  61.       writeln;
  62.  
  63.     man := queue^.Last;
  64.     writeln('The same list backwards is:');
  65.     while man <> NIL do
  66.       begin
  67.          write(man^.name,' ');
  68.          man := man^.Pred;
  69.       end;
  70.       writeln;
  71.  
  72.     n := queue^.Cardinal;
  73.     writeln('Queue size should be 5 now, is: ', n);
  74.  
  75.     queue^.Clear;
  76.     writeln('After clear operation,');
  77.     n := queue^.Cardinal;
  78.     writeln('   Queue size is ',n);
  79.     tf := queue^.Empty;
  80.     if tf then writeln('    and EMTPY reports queue is empty.');
  81.     writeln;
  82.     writeln('Done with test.');
  83. end.
  84.  
  85.